﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class GestionNotificaciones_Notificacion : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            CargarDestinatarios();
            if (Request.QueryString["idNotificacion"] != null)
            {
                //Si se recibe una id de notificacion es porque esta se va a ser consultada
                //Desabilito el campo de destinatario ya que no se va a enviar una solicitud
                DropDownListDestinatario.Enabled = false;
                int idNotificacion = Convert.ToInt32(Request.QueryString["idNotificacion"].ToString());

                GestionNotificaciones gN = new GestionNotificaciones();

                //Verifico si se quiere borrar o solo consultar
                if (Request.QueryString["Borrar"] != null)
                {
                    if (Request.QueryString["Borrar"].ToString() == "true")
                        gN.EliminarNotificacion(idNotificacion);
                    Response.Redirect("FrListarMisNotificaciones.aspx");
                }
                else
                {
                    //Obtengo la informacion de la notificacion
                    DataRow row = gN.ObtNotificacionPorId(idNotificacion);

                    //Habilito desabilito las opciones que no se van a usar
                    ButtonEnviar.Visible = false;

                    //Muestro la informacion de la notificacion
                    LabelEstado.Text = row["estado"].ToString();
                    LabelFechaEnvio.Text = row["fechaEnvio"].ToString();
                    TextBoxRemitente.Text = row["remitente"].ToString();
                    DropDownListDestinatario.SelectedValue = row["destinatario"].ToString();
                    TextBoxAsunto.Text = row["asunto"].ToString();
                    TextBoxDescripcion.Text = row["descripcion"].ToString();

                    //Cambio el estado de la notificacion a revisada si es una notificacion enviada a mi
                    if (Session["nomUsr"] != null)
                    {
                        if (Session["nomUsr"].ToString() == row["destinatario"].ToString())
                            gN.ModificarEstadoDeNotificacion("revisada", idNotificacion);
                    }
                    else
                        if (Session["nomUsEmp"] != null)
                        {
                            if (Session["nomUsEmp"].ToString() == row["destinatario"].ToString())
                                gN.ModificarEstadoDeNotificacion("revisada", idNotificacion);
                        }
                        else
                        {
                            //Error. se entro a la pagina sin loguearse.
                        }
                }
            }
            else
            {
                //Si no se envio una id de notificacion, quiere decir que se quiere crear una

                //Desabilito las opciones que no se van a usar
                ButtonEliminar.Visible = false;

                LabelFechaEnvio.Text = "--";

                //Si es una empresa o un usuario se asigna su nombre de usuario al remitente
                if (Session["nomUsr"] != null)
                    TextBoxRemitente.Text = Session["nomUsr"].ToString();
                if (Session["nomUsEmp"] != null)
                    TextBoxRemitente.Text = Session["nomUsEmp"].ToString();
            }
        }
    }

    void CargarDestinatarios()
    {
        //Cargar administradores y practicantes
        Usuario tmpu = new Usuario();
        List<Usuario> usuarios = tmpu.consultarUsuario();
        foreach (Usuario usu in usuarios)
        {
            ListItem item = new ListItem(usu.ObtApellido() + "," + usu.ObtNombre() + " (" + usu.ObtRol() + ")", usu.ObtNombreUsuario());
            DropDownListDestinatario.Items.Add(item);
        }

        //Cargar empresas
        if (Session["nomUsr"] != null)
        {
            if (Session["rolUsuario"].ToString() != "practicante")
            {
                Empresa tmpe = new Empresa();
                List<Empresa> empresas = tmpe.consultarEmpresa();
                foreach (Empresa empresa in empresas)
                {
                    ListItem item = new ListItem("Empresa: " + empresa.ObtNombre(), empresa.ObtNombreUsuario());
                    DropDownListDestinatario.Items.Add(item);
                }
            }
        }
    }

    protected void ButtonEnviar_Click(object sender, EventArgs e)
    {
        string remitente = TextBoxRemitente.Text;
        string destintatario = DropDownListDestinatario.SelectedValue;
        string asunto = TextBoxAsunto.Text.Trim();
        string descripcion = TextBoxDescripcion.Text.Trim();

        GestionNotificaciones gN = new GestionNotificaciones();

        if (gN.CrearNotificacion(remitente, destintatario, asunto, descripcion) == 1)
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('La notificación ha sido enviada', {timeout: 2 , showClose: false });", true);
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No se pudo enviar la notificación', {timeout: 3 , showClose: false });", true);
    }
    protected void ButtonCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("FrListarMisNotificaciones.aspx");
    }
    protected void ButtonEliminar_Click(object sender, EventArgs e)
    {
        int idNotificacion=Convert.ToInt32(Request.QueryString["idNotificacion"]);
        GestionNotificaciones gN = new GestionNotificaciones();
        if(gN.EliminarNotificacion(idNotificacion)==1)
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('La notificación ha sido eliminada <br /><div align=\"center\"><a href=\"FrListarMisNotificaciones.aspx\"><img src=\"../images/ok2.png\"/></a></div>');", true);
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No se pudo eliminar la notificación', {timeout: 3 , showClose: false });", true);
    }
}
